﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
using System.Web;
using System.Web.Mvc;
using System.Net.Http;
using Newtonsoft.Json;
using WebApi2017.Models;

namespace WebApi2017.Areas.HelpApi.Controllers
{
    public class ClientToWebApiController : Controller
    {
        public ActionResult ClientToUse()
        {
            return View();
        }

        [ValidateAntiForgeryToken]
        public ActionResult ClientToWebApiGet()
        {
            //后台client方式GET提交
            HttpClient myHttpClient = new HttpClient();
            //提交当前地址的webapi
            string url = "http://" + System.Web.HttpContext.Current.Request.Url.Host + ":" + System.Web.HttpContext.Current.Request.Url.Port.ToString();
            myHttpClient.BaseAddress = new Uri(url);
            //GET提交 返回string 
            HttpResponseMessage response = myHttpClient.GetAsync("api/ApiDemo/Get2").Result;
            string result = "";
            if (response.IsSuccessStatusCode)
            {
                result = response.Content.ReadAsStringAsync().Result;
            }
            //return Content(JsonConvert.SerializeObject(result));

            Product product = null;
            //GET提交 返回class
            response = myHttpClient.GetAsync("api/ProductsAPI/GetProduct/1").Result;
            if (response.IsSuccessStatusCode)
            {
                product = response.Content.ReadAsAsync<Product>().Result;
            }
            //return Content (JsonConvert.SerializeObject(product));

            //put 提交 先创建一个和webapi对应的类            
            var content = new FormUrlEncodedContent(new Dictionary<string, string>()
                {
                    {"Id","2"},
                    {"Name","Name:"+DateTime.Now.ToString() },
                    {"Category","111"},
                    {"Price","1"}
                 });
            response = myHttpClient.PutAsync("api/ProductsAPI/PutProduct/2", content).Result;
            if (response.IsSuccessStatusCode)
            {
                result = response.Content.ReadAsStringAsync().Result;
            }


            //post 提交 先创建一个和webapi对应的类
            content = new FormUrlEncodedContent(new Dictionary<string, string>()
                {
                    {"Id","382accff-57b2-4d6e-ae84-a61e00a3e3b5"},
                    {"Name","Name" },
                    {"Category","111"},
                    {"Price","1"}
                 });
            response = myHttpClient.PostAsync("api/ProductsAPI/PostProduct", content).Result;
            if (response.IsSuccessStatusCode)
            {
                result = response.Content.ReadAsStringAsync().Result;
            }
            //delete 提交
            response = myHttpClient.DeleteAsync("api/ProductsAPI/DeleteProduct/1").Result;
            if (response.IsSuccessStatusCode)
            {
                result = response.Content.ReadAsStringAsync().Result;
            }

            //GET提交 返回List<class>
            response = myHttpClient.GetAsync("api/ProductsAPI/GetAllProducts").Result;
            List<Product> listproduct = new List<Models.Product>();
            if (response.IsSuccessStatusCode)
            {
                listproduct = response.Content.ReadAsAsync<List<Product>>().Result;
            }
            return Content(JsonConvert.SerializeObject(listproduct));
        }
    }
}